from django.shortcuts import render

# Create your views here.


# from utils.tencent.sms import *
from django.shortcuts import render
from django.http import HttpResponse


# 在视图中对数据库进行操作
from . import models # 导入models这个文件

def demo(requests):
    # 操作model
    # 添加数据
    # obj = models.Stu() # 拿到这个对象
    # obj.name = "123"
    # obj.age=23
    # obj.save() # 保存

    # 使用字典添加
    data ={"name":"123","age":23}
    obj =models.Stu(**data)
    obj.save()


    # 查询,返回QuerySet对象
    models.Stu.objects.all()

    # 具体查询,如果没有或者多个会报错，因此一般写主键
    models.Stu.objects.get(id=1) # pk=

    # 多个数据使用过滤器查询
    models.Stu.objects.filter(name="123")


    # 删除
    res=models.Stu.objects.get(id=1)  # pk=
    res.delete()

    # 修改,更新，需要指定id
    res = models.Stu.objects.get(id=1)
    models.Types.obejects.filter(id=1).update(**data)


    def __repr__(self):
        # 设置查询返回的样式
        return f'<Stu: Stu object (id:{self.id}, name:{self.name})>'



# 一对一模型，数据的添加，学生和学生详情表
def add_stu_stuinfo(requests):
    stu={

    }
    stuobj= models.Stu(**stu)
    stuobj.save()

    stuinfo_data={
        'sid':stuobj, # 传入的是对象
        'xueli':"本科",
        "phone":'123456'
    }
    stuinfo_obj = models.StuInfo(**stuinfo_data)
    stuinfo_obj.save()

# 一对一模型，查询数据
def query_stu_stuinfo(requests):

    # 通过学生类获取学生信息
    obj = models.Stu.objects.last()
    print(obj.name)
    print(obj.stuinfo.xueli) # 关联有关系的类再点字段

    # 通过学生详情，获取学生信息
    obj = models.StuInfo.objects.first()
    print(obj.xueli)
    obj.delete()# 删一个，关联的也就被删了

# 一对一,删除数据
def delete_stu_stuinfo(requests):
    obj = models.Stu.objects.last()
    print(obj.name)
    print(obj.stuinfo.xueli)  # 关联有关系的类再点字段



# 一对多模型
def add_Class_Student(requests):

    classobj = models.Classes(name="1班")
    classobj.save()

    # 学生数据
    s1 = models.Student(name="张三",age=23,bid=classobj)
    s2 = models.Student(name="李三",age=23,bid=classobj)
    s3 = models.Student(name="成三",age=23,bid=classobj)
    s4 = models.Student(name="孙三",age=23,bid=classobj)

    s1.save()
    s2.save()
    s3.save()
    s4.save()


# 一对多查询
def query_Class_Student(requests):
    # 通过班级获取学生
    obj = models.Classes.objects.last()
    print(obj.student_set.all()) # 获取这个班的所有学生

    # 学生查询班级
    obj = models.Student.objects.last()
    print(obj.name)
    print(obj.bid.name) # 获取班级名称，

def delete_Class_Student(requests):
    obj = models.Classes.objects.last()
    obj.delete()



# 多对多，添加
def add_classes1_teacher(requests):

    # 添加班级
    obj1 = models.Classes1(naem="李老师")
    obj2 = models.Classes1(naem="王老师")
    obj3 = models.Classes1(naem="张老师")
    obj1.save()
    obj2.save()
    obj3.save()

    # 添加老师
    t1 = models.Teacher(naem="李老师")
    t2= models.Teacher(naem="王老师")
    t3 = models.Teacher(naem="张老师")
    t1.save()
    t2.save()
    t3.save()

    # 添加关系
    b1 = models.Classes1.objects.get(id=1)
    # 给班级添加老师
    b1.bid.add()

def book_insert(request):
    return render(request,"book/add.html")